/**
 * TTS (文本到语音) 功能模块
 * 提供语音播报功能，用于在付款或取消付款时播放提示语
 */
class TTSManager {
    constructor() {
        // 检查浏览器是否支持SpeechSynthesis API
        this.isSupported = 'speechSynthesis' in window;
        this.voice = null;
        this.initVoice();
    }

    // 初始化语音设置
    initVoice() {
        if (!this.isSupported) return;

        // 当语音列表加载完成时设置默认语音
        const onVoicesChanged = () => {
            const voices = speechSynthesis.getVoices();
            // 尝试找到中文语音
            this.voice = voices.find(voice => 
                voice.lang === 'zh-CN' || 
                voice.name.includes('Chinese') || 
                voice.name.includes('中文')
            ) || voices[0]; // 如果没有找到中文语音，使用默认语音
        };

        // Chrome浏览器需要等待voiceschanged事件
        speechSynthesis.onvoiceschanged = onVoicesChanged;
        // 立即尝试获取一次语音列表
        onVoicesChanged();
    }

    // 播放语音
    speak(text, options = {}) {
        if (!this.isSupported || !text) return false;

        try {
            // 取消所有正在播放的语音
            speechSynthesis.cancel();

            const utterance = new SpeechSynthesisUtterance(text);
            
            // 设置语音参数
            if (this.voice) utterance.voice = this.voice;
            utterance.lang = options.lang || 'zh-CN';
            utterance.volume = options.volume !== undefined ? options.volume : 1; // 0到1
            utterance.rate = options.rate !== undefined ? options.rate : 1; // 0.1到10
            utterance.pitch = options.pitch !== undefined ? options.pitch : 1; // 0到2

            // 播放语音
            speechSynthesis.speak(utterance);
            return true;
        } catch (error) {
            console.error('TTS播放失败:', error);
            return false;
        }
    }

    // 停止所有语音播放
    stop() {
        if (this.isSupported) {
            speechSynthesis.cancel();
        }
    }

    // 商品扫码提示
    speakProductScanned(product, quantity = 1) {
        const message = `${product.name}，单价${product.price}元，${quantity}件，共${(parseFloat(product.price) * quantity).toFixed(2)}元`;
        return this.speak(message);
    }

    // 付款成功提示
    speakPaymentSuccess(amount, paymentMethod = '微信') {
        const message = `收到${paymentMethod}付款${amount}元，谢谢惠顾！`;
        return this.speak(message);
    }

    // 付款取消提示
    speakPaymentCancelled() {
        const message = '付款已取消';
        return this.speak(message);
    }

    // 订单完成提示
    speakOrderCompleted(order) {
        const itemCount = order.items.reduce((sum, item) => sum + item.quantity, 0);
        const message = `订单已完成，共${itemCount}件商品，总计${order.totalAmount}元`;
        return this.speak(message);
    }

    // 自定义提示信息
    speakCustomMessage(message) {
        return this.speak(message);
    }
}

// 创建TTSManager实例并暴露到全局window对象
if (typeof window !== 'undefined') {
    window.ttsManager = new TTSManager();
}